package com.atcd.springboot2.controller;


import io.micrometer.core.instrument.Counter;
import io.micrometer.core.instrument.MeterRegistry;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.UUID;

@Controller
@Slf4j
public class FileUpController {


    Counter counter;
    //注册指标信息
    public FileUpController(MeterRegistry meterRegistry){
        counter = meterRegistry.counter("FileUpController.controller");
    }

    @RequestMapping("/fileup")
    public  String  fileup(){
        //访问页面，+1
        counter.increment();
        return "fileup";
    }


    @PostMapping("/uplode")
    @ResponseBody
    public  String uplode(@RequestPart("headImg") MultipartFile headImg, @RequestParam("dir") String dir)throws  Exception{ //多文件上传使用 MultipartFile[] 数组

   log.info("上传的头像: headImg的大小={}",headImg.getSize());//上传的头像: headImg的大小=51200


        //建议在使用头像上传或者生活照上传的时候，建立自己的文件夹目录dir ，方便取出


        if(! headImg.isEmpty()){//不为空

            //获取原始文件名
            String originalFilename = headImg.getOriginalFilename();
            //截取文件名的后缀 png 等格式...
            String imgSuffix=originalFilename.substring(originalFilename.lastIndexOf("."));// .jpg
            //生成唯一的图片名字
            String newFile= UUID.randomUUID().toString()+imgSuffix;
            //生成存放日期目录
            SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy/MM/dd");
            String dataPath = dateFormat.format(new Date());

            //时间目录
            File targetPath = new File("D://tep/"+dir,dataPath);
            if(!targetPath.exists()) targetPath.mkdirs(); //没有这个目录就创建一个;

            //加上唯一文件名的最终的目录
            File finalFilePath=new File(targetPath,newFile);

            //保存到文件服务器，oos服务器
            headImg.transferTo(finalFilePath);

//            for(MultipartFile file:xxx) 多个图片数组

            //可访问的路径要返回给页面
            //http://localhost:8080/head/2022/05/21/8ae0dbe5-7f7b-4ff7-97a4-978b9dffae84.jpg
            String filename=dir+"/"+dataPath+"/"+newFile;
            return filename;
        }
       return null;
    }
}
